N <- 101	#入力次元
M <- 0	#変更点
eta <- 0.9
MML <- 100*N
XRandSd <- 1/sqrt(N)	#標準偏差(分散の2乗)
XRandM <- 0	#平均

b<-matrix(1,N,1)	#変更点
bL<-sqrt(sum(b^2))

#変更点###
j1<-b
for(i in 1:(N*0.2)){
	j1[i]=-1
}

j2<-b
for(i in 1:(N*0.4)){
	j2[i]=-1
}
##########

R<-matrix(0,MML+M+2,2)
q<-matrix(0,MML+M+2,1)
L<-matrix(0,MML+M+2,2)

mlearn <- function(){
	x<-matrix(0,N,1)
	uj1<-0
	uj2<-0
	for (i in (M+1):(M+MML+1)){
		L[i,1]<<-sqrt(sum(j1^2))
		L[i,2]<<-sqrt(sum(j2^2))
		R[i,1]<<-sum(j1*b)/(L[i,1]*bL)
		R[i,2]<<-sum(j2*b)/(L[i,2]*bL)
		q[i]<<-sum(j1*j2)/(L[i,1]*L[i,2])
		
		x<-matrix(rnorm(N,XRandM,XRandSd),N,1)
		uj1<-sum(x*j1)
		uj2<-sum(x*j2)
		j1 <<- j1 + eta*(uj2-uj1)*x
		j2 <<- j2 + eta*(uj1-uj2)*x
	}
	L[(M+MML+2),1]<<-sqrt(sum(j1^2))
	L[(M+MML+2),2]<<-sqrt(sum(j2^2))
	R[(M+MML+2),1]<<-sum(j1*b)/(L[(M+MML+2),1]*bL)
	R[(M+MML+2),2]<<-sum(j2*b)/(L[(M+MML+2),2]*bL)
	q[(M+MML+2)]<<-sum(j1*j2)/(L[(M+MML+2),1]*L[(M+MML+2),2])
}

system.time(#returns CPU Time Used
	#MAIN
	mlearn()
,FALSE)

#
plot(L[(M+1):(M+MML+2),1]/sqrt(N),R[(M+1):(M+MML+2),1],xlim=c(0.70,1),ylim=c(0.2,1),type="l")
par(new=T);plot(L[(M+1):(M+MML+2),2]/sqrt(N),R[(M+1):(M+MML+2),2],xlim=c(0.70,1),ylim=c(0.2,1),type="l")
#
plot(L[1:(M+MML+2),1]/sqrt(N),R[1:(M+MML+2),1],type="l")
par(new=T);plot(L[1:(M+MML+2),2]/sqrt(N),R[1:(M+MML+2),2],type="l")
#
plot(1:(M+MML+2),R[,1],ylim=c(0,1),type="l")
par(new=T);plot(1:(M+MML+2),R[,2],ylim=c(0,1),type="l")
par(new=T);plot(1:(M+MML+2),q,ylim=c(0,1),type="l")
#
plot((M+1):(M+MML+2),R[M:(M+MML+2),1],ylim=c(0,1),type="l")
par(new=T);plot((M+1):(M+MML+2),R[(M+1):(M+MML+2),2],ylim=c(0,1),type="l")
par(new=T);plot((M+1):(M+MML+2),q[(M+1):(M+MML+2)],ylim=c(0,1),type="l")
